/**
 * OTA升级命令类
 */
import BaseCommand from './baseCommand';

class OTAUpdateCommand extends BaseCommand {
  static CMD = 0x13;  // 命令类型：OTA升级

  /**
   * 创建OTA升级命令
   * @param {string} otaUrl - OTA升级固件URL
   * @returns {Uint8Array} 命令帧
   */
  static createCommand(otaUrl) {
    console.log('[OTA升级] 创建命令, URL:', otaUrl);
    
    // 创建JSON数据
    const jsonData = {
      ota_url: otaUrl
    };
    
    // 转换为字符串
    const jsonStr = JSON.stringify(jsonData);
    
    // 使用微信小程序的API将字符串转换为Uint8Array
    const data = new Uint8Array(jsonStr.length);
    for (let i = 0; i < jsonStr.length; i++) {
      data[i] = jsonStr.charCodeAt(i);
    }
    
    return this.packFrame(this.CMD, data);
  }

  /**
   * 解析响应数据
   * @param {Uint8Array} frame - 完整的响应帧
   * @returns {Object|null} 解析结果
   */
  static parseResponse(frame) {
    console.log('[OTA升级] 开始解析响应');
    
    const baseResult = this.parseBaseFrame(frame);
    if (!baseResult) return null;

    if (baseResult.cmd !== this.CMD) {
      console.warn('[OTA升级] 命令类型不匹配');
      return null;
    }

    if (baseResult.data.length < 1) {
      console.warn('[OTA升级] 数据长度不正确');
      return null;
    }

    const success = baseResult.data[0] === 1;
    console.log('[OTA升级] 解析成功, 结果:', success);
    return { success };
  }
}

export default OTAUpdateCommand; 